package com.treasure.mall.biz.service.core.contact;

import com.treasure.mall.biz.base.SearchableCrudService;
import com.treasure.mall.biz.entity.contact.ChatPO;
import com.treasure.mall.biz.entity.user.UserPO;

import java.util.List;

/**
 * 
 * <p>
 * +---------------------------------------------------------
 * * @package: com.treasure.mall.biz.service.core.contact
 * * @author: guomw (guomwchen@foxmail.com)
 * * @date: 2020/8/11 5:30 下午
 * * @since: V1.0.0
 * +---------------------------------------------------------
 * 注意：本内容仅限于内部传阅，禁止外泄以及用于其他的商业目的
 *
 */
public interface ChatService extends SearchableCrudService<ChatPO, Long> {

    /**
     * 根据商家ID和用户ID，筛选出聊天列表
     *
     * @param merchantId
     * @return
     */
    List<ChatPO> findAll(Long merchantId);

    /**
     * 根据用户ID，获取用户聊天回话
     *
     * @param userId
     * @return
     */
    List<ChatPO> findAllByUserId(Long userId);

    /**
     * 添加聊天室
     *
     * @param user
     * @param merchantId
     * @param groupId
     * @param groupName
     */
    void createGroup(UserPO user, Long merchantId, String groupId, String groupName);

    /**
     * 激活聊天室
     *
     * @param userId
     * @param merchantId
     */
    void enableGroup(Long userId, Long merchantId);

    /**
     * 删除聊天回话
     *
     * @param id
     */
    void deleteGroup(Long id);

    /**
     * 重置回话未读数
     *
     * @param userId
     * @param merchantId
     */
    void resetNoReadCount(Long userId, Long merchantId);

    void resetUserNoReadCount(Long userId, Long merchantId);

    /**
     * 更新最后回复消息
     *
     * @param userId
     * @param merchantId
     * @param message
     */
    void modifyLastMessage(Long userId, Long merchantId, String message);

    void modifyLastMessageByMerchantId(Long userId, Long merchantId, String message);

    /**
     * 判断聊天室是否存在
     *
     * @param userId
     * @param merchantId
     * @return
     */
    boolean exist(Long userId, Long merchantId);


}
